package org.example.mapper;

import org.apache.ibatis.annotations.Param;
import org.example.pojo.UsersTb;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UsersTbMapper {
    List<UsersTb> querryAll();

    /**
     * 用户注册Dao
     * @param username 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userPhone 用户电话
     * @return 1成功 0 失败
     */
    int userRegist(@Param("username") String username,@Param("userPassword") String userPassword,@Param("userSex") String userSex,@Param("userXh") String userXh,@Param("userPhone") String userPhone);

    /**
     * 检查用户名是否被占用
     * @param username
     * @return
     */
    UsersTb checkUserName(@Param("username") String username);

    /**
     * 用户信息修改
     * @param userName 用户名
     * @param userphone 用户电话
     * @param usersex 用户性别
     * @param userxh 用户学号
     * @return 返回影响行数
     */
    int alterUserInfo(@Param("userName") String userName,@Param("userphone") String userphone,@Param("usersex") String usersex,@Param("userxh") String userxh);

    /**
     * 用户密码修改功能
     * @param username 用户名
     * @param userpassword 用户密码
     * @return 1成功 0 失败
     */
    int alterUserPassword(@Param("username") String username, @Param("userpassword") String userpassword);

    /**
     * 通过用户名查询用户信息
     * @param username 用户名
     * @return
     */
    UsersTb queryUserInfoByUserName(@Param("username") String username);

    /**
     * 修改用户信息  管理员
     * @param userName 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userStatus 用户身份状态 1管理员 0 普通用户
     * @param userPhone 用户电话
     * @return
     */
    int adminAlterUserInfo(@Param("userName") String userName, @Param("userPassword") String userPassword,@Param("userSex") String userSex,@Param("userXh") String userXh, @Param("userStatus") String userStatus,@Param("userPhone") String userPhone);

    /**
     * 管理员添加用户信息
     * @param username 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userPhone 用户电话
     * @param userStatus 用户身份状态 1管理员 0普通用户
     * @return
     */
    int adminAddUser(@Param("username") String username,@Param("userPhone") String userPhone, @Param("userStatus") String userStatus,@Param("userXh") String userXh, @Param("userSex") String userSex,@Param("userPassword") String userPassword);

    /**
     * 通过用户id删除用户信息
     * @param userId 用户id
     * @return
     */
    int adminDeleteUserInfoByUserId(@Param("userId") Integer userId);

    /**
     * 通过用户名删除
     * @param userName 用户名
     * @return
     */
    int adminDeleteUserInfoByUserName(@Param("userName") String userName);
}
